package com.engine.salary.service;

import com.engine.salary.entity.salaryformula.ExpressFormula;
import com.engine.salary.entity.salaryformula.config.FormluaConfig;
import com.engine.salary.entity.salaryformula.param.SalaryFormulaMockParam;
import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam;
import com.engine.salary.entity.salaryformula.po.FormulaPO;
import com.engine.salary.entity.salaryformula.po.FormulaVar;

import java.util.Collection;
import java.util.List;

/**
 * 薪酬管理公式编辑器
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
public interface SalaryFormulaService {

    /**
     * 根据公式id获取公式内容
     *
     * @param formulaIds
     * @return
     */
    List<ExpressFormula> listExpressFormula(Collection<Long> formulaIds);

    /**
     * 根据公式id获取公式内容
     *
     * @param formulaId
     * @return
     */
    ExpressFormula getExpressFormula(Long formulaId);

    FormulaPO save(SalaryFormulaSaveParam salaryFormulaSaveParam);


    Object mock(SalaryFormulaMockParam param);

    /**
     * 初始化函数
     */
    void initFunction();

    void deleteNotIn(List<Long> formulaIds);

    List<FormulaVar> listVarByFormulaIds(List<Long> effectiveFormulaIds);

    List<FormulaVar> listByCode(String code);

    void updateVar(FormulaVar formulaVar);

    List<FormulaPO> listByIds(List<Long> formulaIds);

    List<FormulaPO> listAll();

    List<FormulaVar> listAllVar();

    void update(FormulaPO formulaPO);

    FormluaConfig getConfig();

    Long add(FormulaPO formula);
}
